home *** CD-ROM | disk | FTP | other *** search
- /*
- * This file contains definitions for the various event codes and values
- * that go to make up event streams.
- */
-
- #ifdef MemMon
- #define EventStream (monfile != NULL)
- #ifdef EventMon
- /*
- * If EventMon is defined, allocation is merged with the rest of
- * evaluation history and uses lowercase codes (different from those
- * used when MemMon is used otherwise).
- */
- #define E_Lrgint 'L' /* Allocate large integer block */
- #define E_Real 'd' /* Allocate real number block */
- #define E_Cset 'e' /* Allocate cset block */
- #define E_File 'g' /* Allocate file block */
- #define E_Record 'h' /* Allocate record block */
- #define E_Tvsubs 'i' /* Allocate substring trapped variable */
- #define E_External 'j' /* Allocate external block */
- #define E_List 'k' /* Allocate list header block */
- #define E_Lelem 'm' /* Allocate list element block */
- #define E_Table 'n' /* Allocate table header block */
- #define E_Telem 'o' /* Show table element block */
- #define E_Tvtbl 'p' /* Allocate table element trapped variable */
- #define E_Set 'q' /* Allocate set header block */
- #define E_Selem 't' /* Allocate set element block */
- #define E_Slots 'w' /* Allocate hash header block */
- #define E_Coexpr 'x' /* Allocate co-expression block */
- #define E_Refresh 'y' /* Allocate refresh block */
- #define E_Alien 'z' /* Show alien block */
- #define E_Free 'Z' /* Show free region */
- #define E_String 's' /* Allocate string */
- #else /* EventMon */
- /*
- * If EventMon is not defined, MemMon codes are used for allocation
- * history.
- */
- #define E_Lrgint 'i' /* Allocate large integer block */
- #define E_Real 'r' /* Allocate real number block */
- #define E_Cset 'c' /* Allocate cset block */
- #define E_File 'f' /* Allocate file block */
- #define E_Record 'R' /* Allocate record block */
- #define E_Tvsubs 'u'
- #define E_External 'E' /* Allocate external block */
- #define E_List 'L' /* Allocate list header block */
- #define E_Lelem 'l' /* Allocate list element block */
- #define E_Table 'T' /* Allocate table header block */
- #define E_Telem 't' /* Show table element block */
- #define E_Tvtbl 'e'
- #define E_Set 'S' /* Allocate set header block */
- #define E_Selem 's' /* Allocate set element block */
- #define E_Slots 'h' /* Allocate hash header block */
- #define E_Coexpr 'X' /* Allocate co-expression block */
- #define E_Refresh 'x' /* Allocate refresh block */
- #define E_Alien 'A' /* Show alien block */
- #define E_Free 'F' /* Show free region */
- #define E_String '"' /* Allocate string */
- #endif /* EventMon */
-
- /*
- * These monitoring codes are common whether or not EventMon is defined.
- */
- #define E_BlkDeAlc '-' /* Deallocate block */
- #define E_StrDeAlc '~' /* Deallocate string */
- #define E_Highlight 'H' /* Show highlight event */
- #define E_Offset '+' /* Indicate address offset */
- #define E_Pause ';' /* Note mmpause() comment */
-
- /*
- * These are not "events"; they are provided for uniformity in tools
- * that deal with types.
- */
- #define E_Integer '@' /* Integer pseudo-event */
- #define E_Null '$' /* Null pseudo-event */
- #define E_Proc '%' /* Procedure pseudo-event */
- #define E_Kywdint '^' /* Integer keyword pseudo-event */
- #define E_Kywdpos '&' /* &pos pseudo-event */
- #define E_Kywdsubj '*' /* &subject pseudo-event */
-
- #else /* MemMon */
- /*
- * If memory monitoring is not enabled, redefine function calls
- * to do nothing.
- */
- #define MMAlc(n,t)
- #define MMBGC(r)
- #define MMEGC()
- #define MMMark(b,t)
- #define MMOut(p,m)
- #define MMShow(d,c)
- #define MMStat(a,l,c)
- #define MMStr(n)
- #define MMSMark(a,n)
- #endif /* MemMon */
-
- /*
- * Event monitoring
- */
-
- #ifdef EventProc
- #define TypeCode(d) (word)(Qual(d) ? 0 : Type(d) + 1)
- #define MaxEvNest 10 /* maximum event context nesting */
- #define MaxEvString 100 /* maximum string in event token */
- #endif /* EventProc */
-
- #ifdef EventMon
- /*
- * Event sequence codes.
- */
- #define C_Eval 1 /* Main event sequence */
- #define C_Symbols 2 /* Symbol table sequence */
- #define C_Redraw 3 /* Redraw allocated data */
- #define C_Collect 4 /* Garbage collection sequence */
- #define C_Mark 5 /* Marking sequence */
- #define C_Refresh 6 /* Memory refresh sequence */
- #define C_Verify 7 /* Memory verification sequence */
-
- /*
- * Codes used for storage regions.
- */
- #define E_Base '<' /* Base address of storage region */
- #define E_Size '>' /* Region size */
- #define E_Used '=' /* Space used */
-
-
- /*
- * Symbol table events
- */
-
- #define E_Pid '.' /* Symbol name */
- #define E_Sym 'T' /* Symbol table entry data */
-
- /*
- * Garbage collection region
- */
- #define E_Region '?' /* Code indicating region */
-
- /*
- * Codes for main sequence events
- */
-
- /*
- * Timing events
- */
- #define E_Tick '.' /* Clock tick */
-
-
- /*
- * Code-position events
- */
- #define E_Colm '|' /* Column number */
- #define E_Line '_' /* Line number */
-
- /*
- * Virtual-machine instructions
- */
- #define E_Opcode 'O' /* Virtual-machine instruction */
-
- /*
- * Type-conversion events
- */
- #define E_Cvint 'I' /* Conversion to integer */
- #define E_Cvnum 'N' /* Conversion to numeric */
- #define E_Cvstr 'Q' /* Conversion to string */
- #define E_Cvcset 'J' /* Conversion to cset */
- #define E_Cvreal 'K' /* Conversion to real */
-
- /*
- * Expression events
- */
- #define E_Ecall 'c' /* Call of a built-in operation */
- #define E_Efail 'f' /* Failed from expression */
- #define E_Eret 'r' /* Return from expression */
- #define E_Bsusp 'b' /* Suspension from built-in operation */
- #define E_Esusp 'a' /* Suspension from alternation */
- #define E_Lsusp 'l' /* Suspension from limitation */
- #define E_Eresum 'u' /* Resumption of an expression */
- #define E_Evan 'v' /* Removal of a suspended generator */
-
- /*
- * Co-expression events
- */
-
- #define E_Coact 'A' /* Co-expression activation */
- #define E_Coret 'B' /* Co-expression return */
- #define E_Cofail 'D' /* Co-expression failure */
-
- /*
- * Procedure events
- */
-
- #define E_Pcall 'C' /* Call of procedure */
- #define E_Pfail 'F' /* Procedure failure */
- #define E_Pret 'R' /* Return of a result */
- #define E_Psusp 'S' /* Suspension from procedure */
- #define E_Presum 'U' /* Resumption of a procedure */
- #define E_Pvan 'V' /* Removal of a suspended generator */
-
- /*
- * Garbage collections
- */
-
- #define E_Collect 'G' /* Garbage collection */
-
- /*
- * Termination Events
- */
- #define E_Error 'E' /* Run-time error */
- #define E_Exit 'X' /* Exit from program */
-
- #else /* EventMon */
- /*
- * If event monitoring is not enabled, redefine function calls
- * to do nothing.
- */
- #define EVFnc(i)
- #define EVInt(i)
- #define EVList(i,j)
- #define EVNest(i)
- #define EVUnNest(i)
- #define EVProc(v,m)
- #endif /* EventMon */
-
- #ifdef EventProc
- /*
- * Codes used in event history files.
- */
-
- #define E_Comment '#' /* Comment line */
-
- /*
- * Event context switches
- */
- #define E_Start '(' /* Start event sequence */
- #define E_End ')' /* End event sequence */
- #endif /* EventProc */
-